package v1

import (
	"devops-super/api"
	"devops-super/internal/model/entity"
	"github.com/gogf/gf/v2/frame/g"
)

// DeviceConfigGetPageLstReq 分页获取设备配置列表请求
type DeviceConfigGetPageLstReq struct {
	g.Meta `method:"get" path:"/device-config/page-list" summary:"分页获取设备配置列表" tags:"设备配置"`
	*api.PageLstReq
}

// DeviceConfigGetPageLstRes 分页获取设备配置列表响应
type DeviceConfigGetPageLstRes struct {
	*api.PageLstRes[*entity.AppDeviceConfig]
}

// DeviceConfigAddReq 新增设备配置请求
type DeviceConfigAddReq struct {
	g.Meta      `method:"post" path:"/device-config" summary:"新增设备配置" tags:"设备配置"`
	DeviceNo    string `v:"required#设备编号不能为空" json:"deviceNo"`
	ConfigKey   string `v:"required#配置键不能为空" json:"configKey"`
	ConfigValue string `v:"required#配置值不能为空" json:"configValue"`
	Remark      string `json:"remark"`
}

// DeviceConfigAddRes 新增设备配置响应
type DeviceConfigAddRes struct{}

// DeviceConfigUptReq 更新设备配置请求
type DeviceConfigUptReq struct {
	g.Meta      `method:"put" path:"/device-config/{id}" summary:"更新设备配置" tags:"设备配置"`
	Id          int    `v:"min:1#设备配置ID必须" path:"id"`
	DeviceNo    string `v:"required#设备编号不能为空" json:"deviceNo"`
	ConfigKey   string `v:"required#配置键不能为空" json:"configKey"`
	ConfigValue string `v:"required#配置值不能为空" json:"configValue"`
	Remark      string `json:"remark"`
}

// DeviceConfigUptRes 更新设备配置响应
type DeviceConfigUptRes struct{}

// DeviceConfigDelReq 删除设备配置请求
type DeviceConfigDelReq struct {
	g.Meta `method:"delete" path:"/device-config/{id}" summary:"删除设备配置" tags:"设备配置"`
	Id     int `v:"min:1#设备配置ID必须" path:"id"`
}

// DeviceConfigDelRes 删除设备配置响应
type DeviceConfigDelRes struct{}

// DeviceConfigGetOneReq 获取单条设备配置请求
type DeviceConfigGetOneReq struct {
	g.Meta `method:"get" path:"/device-config/getOne" summary:"获取单条设备配置" tags:"设备配置"`
	Id     int `v:"min:1#设备配置ID必须" json:"id"`
}

// DeviceConfigGetOneRes 获取单条设备配置响应
type DeviceConfigGetOneRes struct {
	Info *entity.AppDeviceConfig `json:"info"`
}

// GetDeviceConfigReq 获取设备配置请求
type GetDeviceConfigReq struct {
	g.Meta    `method:"get" path:"/device-config/getConfig" summary:"获取设备配置" tags:"设备配置"`
	DeviceNo  string `v:"required#设备编号不能为空" json:"deviceNo" in:"query"`
	ConfigKey string `v:"required#配置键名" json:"configKey" in:"query"`
}

// GetDeviceConfigRes 获取设备配置响应
type GetDeviceConfigRes struct {
	ConfigValue any    `json:"configValue"`
	UpdatedAt   string `json:"updatedAt"`
	Id          int64  `json:"id"`
}

// SetDeviceConfigReq 保存设备配置请求
type SetDeviceConfigReq struct {
	g.Meta      `method:"post" path:"/device-config/setConfig" summary:"保存设备配置" tags:"设备配置"`
	DeviceNo    string   `v:"required#设备编号不能为空" json:"deviceNo"`
	ConfigKey   string   `v:"required#配置键名" json:"configKey" in:"query"`
	ConfigValue any      `json:"configValue" v:"required#配置项不能为空"`
	CopyDevices []string `json:"copyDevices"`
}

// SetDeviceConfigRes 保存设备配置响应
type SetDeviceConfigRes struct{}
